﻿using System;
using System.Globalization;
using System.Web.UI.WebControls;
using COMMON;
using VO;
using BLL;

namespace PopPromotoraCallCenter
{
    public partial class ConsultaCliente : System.Web.UI.Page
    {

        #region Propriedades
        private int IdAtendente
        {
            get
            {
                //int id = 0;
                //if (Request.QueryString["idUsuario"] != null)
                //{
                //    int.TryParse(Funcao.Decrypt(Request.QueryString["idUsuario"], Configuracao.CRYPTOKEY()), out id);
                //}
                //return id;
                var id = 0;
                if (Session["nIdUsuario"] != null)
                    id = Convert.ToInt16(Session["nIdUsuario"]);
                return id;
            }
        }
        #endregion

        protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack) return;
            CarregarComboCampanha();
        }

        #region Métodos

        #region CarregarComboCampanha
        protected void CarregarComboCampanha()
        {
            var retorno = CampanhaAtendenteBLL.Select(IdAtendente);
            if (retorno.Error == Enumerator.Error.Success)
            {
                ddlCampanha.DataTextField = "nomeCampanha";
                ddlCampanha.DataValueField = "idCampanha";
                ddlCampanha.DataSource = retorno.List;
                ddlCampanha.DataBind();
                ddlCampanha.Items.Insert(0, new ListItem("TODOS", "0"));
            }
            else
                Funcao.Alert(ClientScript, retorno.Message);
        }
        #endregion

        #region Pesquisar
        protected void Pesquisar()
        {
            var cpf = txtCPF.Text.Trim();
            var nome = txtNome.Text.Trim();
            var idCampanha = int.Parse(ddlCampanha.SelectedValue);
            var obj = new Cliente();
            obj.CPF = cpf;
            obj.nmCliente = nome;
            obj.idCampanha = idCampanha;
            obj.idAtendente = IdAtendente;
            var retorno = ClienteBLL.SelectClienteFiltro(obj);
            if (retorno.Error == Enumerator.Error.Success)
            {
                gvCliente.DataSource = retorno.List;
                gvCliente.DataBind();
            }
            else
                Funcao.Alert(ClientScript, retorno.Message);
        }
        #endregion

        #region Atender
        protected void Atender(int idCliente, int idCampanha)
        {
            string url = string.Format("AtendimentoCallCenter.aspx?idUsuario={0}&idCliente={1}&idCampanha={2}",
                Funcao.Encrypt(IdAtendente.ToString(), Configuracao.CRYPTOKEY()),
                Funcao.Encrypt(idCliente.ToString(), Configuracao.CRYPTOKEY()),
                Funcao.Encrypt(idCampanha.ToString(), Configuracao.CRYPTOKEY()));
            Response.Redirect(url);
        }
        #endregion

        #endregion

        #region Eventos

        #region btnPesquisar_Click
        protected void btnPesquisar_Click(object sender, EventArgs e)
        {
            Pesquisar();
        }
        #endregion

        #region gvCliente_RowCommand
        protected void gvCliente_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName.Equals("atender"))
            {
                int index = int.Parse(e.CommandArgument.ToString());
                int idCliente = int.Parse(gvCliente.DataKeys[index]["idCliente"].ToString());
                int idCampanha = int.Parse(gvCliente.DataKeys[index]["idCampanha"].ToString());
                Atender(idCliente, idCampanha);
            }
        }
        #endregion

        protected void gvCliente_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType != DataControlRowType.DataRow) return;
            var idAtendenteCliente = Convert.ToInt16(((HiddenField) e.Row.FindControl("hdAtendente")).Value);
            if (idAtendenteCliente == IdAtendente || idAtendenteCliente <= 0) return;
            ((Button) e.Row.FindControl("btnAtender")).Visible = false;
            ((Label) e.Row.FindControl("lblBloqueado")).Visible = true;
        }

        #endregion

    }
}